home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Languguage OS 2
/
Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO
/
language
/
parallax
/
mac_sit.hqx
/
Parallaxis 2.11
/
rot.z
< prev
next >
Wrap
Text File
|
1992-01-09
|
8KB
|
250 lines
START
64 PE
4 PORTS
SCALAR I4 8( I8 ) I4 B1
VECTOR I2 I5 B3
1 : GOTO 22;
2 : PROC 1 VECTOR I1;
POPV VI1:1;
VI[VI1:1] := 0;
PUSHV VI1:1;
RETURN;
3 : PROC 1;
ERROR "value out of range";
RETURN;
4 : PROC 1;
ERROR "division by 0";
RETURN;
5 : PROC 1
SCALAR
VECTOR I3 I1; group number 1
PUSHV ADDR VI1:3;
6 : VI1:1 := ID - 1; for PIC calculating DIMi
VI1:2 := VI1:1 MOD 8; DIM2
VI1:1 := VI1:1 / 8; DIM1
7 : VI1:3 := VI1:1 * 8;
8 : VI1:4 := VI1:2 + 1;
9 : VI1:3 := VI1:3 + VI1:4;
VI1:3 := VI1:3 + 1;
IF VI1:1 < 0 CALL 2;
IF VI1:1 > 7 CALL 2;
IF VI1:4 < 0 CALL 2;
IF VI1:4 > 7 CALL 2;
CONNECT 1 TO 2 AT VI1:3;
10 : VI1:3 := VI1:1 * 8;
11 : VI1:4 := VI1:2 - 1;
12 : VI1:3 := VI1:3 + VI1:4;
VI1:3 := VI1:3 + 1;
IF VI1:1 < 0 CALL 2;
IF VI1:1 > 7 CALL 2;
IF VI1:4 < 0 CALL 2;
IF VI1:4 > 7 CALL 2;
CONNECT 2 TO 1 AT VI1:3;
13 : VI1:4 := VI1:1 + 1;
14 : VI1:3 := VI1:4 * 8;
15 : VI1:3 := VI1:3 + VI1:2;
VI1:3 := VI1:3 + 1;
IF VI1:4 < 0 CALL 2;
IF VI1:4 > 7 CALL 2;
IF VI1:2 < 0 CALL 2;
IF VI1:2 > 7 CALL 2;
CONNECT 3 TO 4 AT VI1:3;
16 : VI1:4 := VI1:1 - 1;
17 : VI1:3 := VI1:4 * 8;
18 : VI1:3 := VI1:3 + VI1:2;
VI1:3 := VI1:3 + 1;
IF VI1:4 < 0 CALL 2;
IF VI1:4 > 7 CALL 2;
IF VI1:2 < 0 CALL 2;
IF VI1:2 > 7 CALL 2;
CONNECT 4 TO 3 AT VI1:3;
19 : POPV VI1:3;
20 : RETURN; group number : 1
21 : PROC 1; configuration : PIC
VI0:1 := ID - 1; for PIC calculating DIMi
VI0:2 := VI0:1 MOD 8; DIM2
VI0:1 := VI0:1 / 8; DIM1
RETURN; configuration : PIC
22 : CALL 5; connections
23!20 : SI0:1 := 8; line 20 column 2
24!22 : SI0:3 := 0; line 22 column 2
25 : SI0:69 := 7;
26!22 : IF SI0:3 > SI0:69 GOTO 43; line 22 column 2
27!23 : SI0:4 := 0; line 23 column 4
28 : SI0:70 := 7;
29!23 : IF SI0:4 > SI0:70 GOTO 41; line 23 column 4
30!24 : IF SI0:3 < 0 CALL 3; line 24 column 6
31 : IF 7 < SI0:3 CALL 3;
32 : IF SI0:4 < 0 CALL 3;
33 : IF 7 < SI0:4 CALL 3;
34 : SI0:72 := SI0:4 * SIZE( I1 );
35 : SI0:71 := ADDR SI0:5 + SI0:72;
36 : SI0:72 := SI0:3 * SIZE( I8 );
37 : SI0:71 := SI0:71 + SI0:72;
38 : SI[SI0:71] := 0;
39 : SI0:4 := SI0:4 + 1;
40 : GOTO 29;
41 : SI0:3 := SI0:3 + 1;
42 : GOTO 26;
43!27 : SI0:3 := 0; line 27 column 2
44 : SI0:69 := 7;
45!27 : IF SI0:3 > SI0:69 GOTO 57; line 27 column 2
46!28 : IF SI0:3 < 0 CALL 3; line 28 column 4
47 : IF 7 < SI0:3 CALL 3;
48 : IF SI0:3 < 0 CALL 3;
49 : IF 7 < SI0:3 CALL 3;
50 : SI0:71 := SI0:3 * SIZE( I1 );
51 : SI0:70 := ADDR SI0:5 + SI0:71;
52 : SI0:71 := SI0:3 * SIZE( I8 );
53 : SI0:70 := SI0:70 + SI0:71;
54 : SI[SI0:70] := 1;
55 : SI0:3 := SI0:3 + 1;
56 : GOTO 45;
57!30 : SI0:3 := 1; line 30 column 2
58 : SI0:69 := 5;
59!30 : IF SI0:3 > SI0:69 GOTO 72; line 30 column 2
60!31 : IF SI0:3 < 0 CALL 3; line 31 column 4
61 : IF 7 < SI0:3 CALL 3;
62 : SI0:71 := SI0:3 * SIZE( I1 );
63 : SI0:70 := ADDR SI0:5 + SI0:71;
64 : SI[SI0:70] := 1;
65!32 : IF SI0:3 < 0 CALL 3; line 32 column 4
66 : IF 7 < SI0:3 CALL 3;
67 : SI0:71 := SI0:3 * SIZE( I8 );
68 : SI0:70 := ADDR SI0:5 + SI0:71;
69 : SI[SI0:70] := 1;
70 : SI0:3 := SI0:3 + 1;
71 : GOTO 59;
72!36 : WRITE EOL; line 36 column 2
73!37 : WRITE " ORIGINAL IMAGE"; line 37 column 2
74!38 : WRITE EOL; line 38 column 2
75!39 : SI0:3 := 7; line 39 column 2
76 : SI0:69 := 0;
77!39 : IF SI0:3 < SI0:69 GOTO 95; line 39 column 2
78!40 : SI0:4 := 0; line 40 column 4
79 : SI0:70 := 7;
80!40 : IF SI0:4 > SI0:70 GOTO 92; line 40 column 4
81!41 : IF SI0:3 < 0 CALL 3; line 41 column 6
82 : IF 7 < SI0:3 CALL 3;
83 : IF SI0:4 < 0 CALL 3;
84 : IF 7 < SI0:4 CALL 3;
85 : SI0:72 := SI0:4 * SIZE( I1 );
86 : SI0:71 := ADDR SI0:5 + SI0:72;
87 : SI0:72 := SI0:3 * SIZE( I8 );
88 : SI0:71 := SI0:71 + SI0:72;
89 : WRITE SI[SI0:71] 2;
90 : SI0:4 := SI0:4 + 1;
91 : GOTO 80;
92!43 : WRITE EOL; line 43 column 4
93 : SI0:3 := SI0:3 - 1;
94 : GOTO 77;
95!46 : CALL 21; line 46 column 2
96 : LOAD VI0:3 WITH SI0:5;
97 : GOTO 199; line 48 column 2
98!49 : SI0:2 := SI0:1 / 2; line 49 column 4
99!50 : CALL 21; line 50 column 4
100!51 : IF SI0:1 = 0 CALL 4; line 51 column 6
101 : VI0:7 := VI0:1 MOD SI0:1;
102!52 : IF SI0:1 = 0 CALL 4; line 52 column 6
103 : VI0:6 := VI0:2 MOD SI0:1;
104!54 : VI0:4 := VI0:3; line 54 column 6
105!55 : VB0:1 := VI0:6 < SI0:2; line 55 column 6
106 : VB0:2 := TRUE;
107 : IF VB0:1 CALL 124;
108 : IF VB0:2 CALL 110;
109 : GOTO 139;
110 : PROC 1;
111!58 : IF SI0:2 > 0 GOTO 113; line 58 column 24
112 : ERROR "number must be positive";
113 : SI0:69 := 0;
114 : PROPAGATE VI0:4 OUT 4 IN 3;
115 : SI0:69 := SI0:69 + 1;
116 : IF SI0:69 < SI0:2 GOTO 114;
117!60 : VB0:1 := VI0:7 < SI0:2; line 60 column 24
118 : IF VB0:1 CALL 120;
119 : GOTO 123;
120 : PROC 1;
121!60 : VI0:5 := VI0:4; line 60 column 41
122 : RETURN;
123 : RETURN;
124 : PROC 1;
125 : VB0:2 := FALSE;
126!55 : IF SI0:2 > 0 GOTO 128; line 55 column 24
127 : ERROR "number must be positive";
128 : SI0:69 := 0;
129 : PROPAGATE VI0:4 OUT 3 IN 4;
130 : SI0:69 := SI0:69 + 1;
131 : IF SI0:69 < SI0:2 GOTO 129;
132!57 : VB0:3 := VI0:7 >= SI0:2; line 57 column 24
133 : IF VB0:3 CALL 135;
134 : GOTO 138;
135 : PROC 1;
136!57 : VI0:5 := VI0:4; line 57 column 41
137 : RETURN;
138 : RETURN;
139!63 : VI0:4 := VI0:3; line 63 column 6
140!64 : VB0:2 := VI0:7 < SI0:2; line 64 column 6
141 : VB0:1 := TRUE;
142 : IF VB0:2 CALL 159;
143 : IF VB0:1 CALL 145;
144 : GOTO 174;
145 : PROC 1;
146!67 : IF SI0:2 > 0 GOTO 148; line 67 column 24
147 : ERROR "number must be positive";
148 : SI0:69 := 0;
149 : PROPAGATE VI0:4 OUT 1 IN 2;
150 : SI0:69 := SI0:69 + 1;
151 : IF SI0:69 < SI0:2 GOTO 149;
152!69 : VB0:2 := VI0:6 >= SI0:2; line 69 column 24
153 : IF VB0:2 CALL 155;
154 : GOTO 158;
155 : PROC 1;
156!69 : VI0:5 := VI0:4; line 69 column 41
157 : RETURN;
158 : RETURN;
159 : PROC 1;
160 : VB0:1 := FALSE;
161!64 : IF SI0:2 > 0 GOTO 163; line 64 column 24
162 : ERROR "number must be positive";
163 : SI0:69 := 0;
164 : PROPAGATE VI0:4 OUT 2 IN 1;
165 : SI0:69 := SI0:69 + 1;
166 : IF SI0:69 < SI0:2 GOTO 164;
167!66 : VB0:3 := VI0:6 < SI0:2; line 66 column 24
168 : IF VB0:3 CALL 170;
169 : GOTO 173;
170 : PROC 1;
171!66 : VI0:5 := VI0:4; line 66 column 41
172 : RETURN;
173 : RETURN;
174!72 : VI0:3 := VI0:5; line 72 column 6
175!74 : SI0:1 := SI0:2; line 74 column 4
176!76 : CALL 21; line 76 column 4
177 : STORE VI0:3 TO SI0:5;
178!78 : WRITE EOL; line 78 column 4
179!79 : SI0:3 := 7; line 79 column 4
180 : SI0:69 := 0;
181!79 : IF SI0:3 < SI0:69 GOTO 199; line 79 column 4
182!80 : SI0:4 := 0; line 80 column 6
183 : SI0:70 := 7;
184!80 : IF SI0:4 > SI0:70 GOTO 196; line 80 column 6
185!81 : IF SI0:3 < 0 CALL 3; line 81 column 8
186 : IF 7 < SI0:3 CALL 3;
187 : IF SI0:4 < 0 CALL 3;
188 : IF 7 < SI0:4 CALL 3;
189 : SI0:72 := SI0:4 * SIZE( I1 );
190 : SI0:71 := ADDR SI0:5 + SI0:72;
191 : SI0:72 := SI0:3 * SIZE( I8 );
192 : SI0:71 := SI0:71 + SI0:72;
193 : WRITE SI[SI0:71] 2;
194 : SI0:4 := SI0:4 + 1;
195 : GOTO 184;
196!83 : WRITE EOL; line 83 column 6
197 : SI0:3 := SI0:3 - 1;
198 : GOTO 181;
199!48 : SB0:1 := SI0:1 > 1; line 48 column 2
200 : IF SB0:1 GOTO 98;
201!86 : WRITE " FINAL IMAGE"; line 86 column 2
202 : END; IMAGE_ROTATION
STOP